package main

//BSON是一种类json的一种二进制形式的存储格式,用于存储文档并被MongoDB用来远程调用

//连接MongoDB的Go驱动程序中有两大类型表示BSON数据：D和Raw

/*类型D家族被用来简洁地构建使用本地Go类型的BSON对象。这对于构造传递给MongoDB的命令特别有用。D家族包括四类:
D:一个BSON文档，这种类型应该在顺序重要的情况下使用，比如：MongoDB命令
M:一张无序的map，它和D一样，只是不保持顺序
A:一个BSON数组
E:D里面的一个元素
*/
//使用需要导包
import (
	"fmt"
	"go.mongodb.org/mongo-driver/bson"
)

// 使用D类型构建的过滤器文档的例子，用来查找name字段与张三，李四匹配的文档
func main() {
	//filter 过滤器 和sql里面where
	d := bson.D{{"name", "tom"}} //[{name tom}]
	fmt.Println(d)

	fb := bson.D{{
		"name",
		bson.D{{
			"$in",
			bson.A{"张三", "李四"},
		}},
	},
	} //[{name [{$in [张三 李四]}]}]
	fmt.Println(fb)
}

//Raw类型家族用于验证字节切片，你还可以使用Lookup()从原始类型检索单个元素，如果你不想要将BSON反序列化成
//另一种类的开销，那么这是非常有用的，这个教程使用D类型
